package algoWing42.modelo;

public class TorpedoRastreador extends Disparo {
	/**
	 * 
	 */
	private static final long serialVersionUID = 8570836010579284024L;

	private AvionJugador objetivo;

	public static final int RADIO_TORPEDORASTREADOR = 3;
	public static final int DANIO_TORPEDO_RASTREADOR = 8;
	public static final int MAXIMO_MOVIEMIENTOS = 350;
	private int movimientos;

	public TorpedoRastreador(int x, int y) {
		super(x, y, RADIO_TORPEDORASTREADOR, false);
		inicializarTorpedoRastreador();
	}

	/**
	 * Constructor sobrecargado para punto
	 */
	public TorpedoRastreador(Punto posicion) {
		super(posicion.getX(), posicion.getY(), RADIO_TORPEDORASTREADOR, false);
		inicializarTorpedoRastreador();
	}

	private void inicializarTorpedoRastreador() {
		this.danio = DANIO_TORPEDO_RASTREADOR;
		movimientos = 0;
		this.objetivo = Juego.singleton().jugador();
	}

	/**
	 * Nota: jugabilidad: cambio de logica.
	 */
	@Override
	protected void mover() {
		Punto puntoPropio;
		Punto puntoObjeto;
		Punto puntoDireccion;

		puntoPropio = this.getArea().getPosicion();
		puntoObjeto = objetivo.getArea().getPosicion();
		puntoDireccion = puntoObjeto.restar(puntoPropio);

		Punto otro = puntoDireccion.normalizarYRedondear();

		this.moverEnDireccion(otro);
	}

	public void vivir() {
		movimientos = movimientos + 1;
		if(movimientos >= MAXIMO_MOVIEMIENTOS){
			this.destruir();
		}else{
		this.mover();}
	}
}
